Подпрограммы для работы с динамическими массивами

function ArrEqual<T>(a, b: array of T): boolean;
        Проверяет равенство двух массивов
function Copy(a: array of T): array of T;
        Создаёт копию массива
function High(a: array of T): integer;
        Возвращает верхнюю границу массива
function Length(a: array of T): integer;
        Возвращает длину массива
function Length(a: array of T; dim: integer): integer;
        Возвращает длину массива по размерности dim
function Low(a: array of T): integer;
        Возвращает 0
function MatrEqual<T>(a, b: array [,] of T): boolean;
        Проверяет равенство двух матриц
function NextPermutation(a: array of integer): boolean;
        Возвращает следующую перестановку в массиве; возвращает False, если это последняя
procedure Reverse<T>(a: array of T);
        Изменяет порядок элементов в массиве на противоположный
procedure Reverse<T>(a: array of T; index, count: integer);
        Изменяет порядок элементов на противоположный в диапазоне массива длины count, начиная с индекса index
procedure Reverse<T>(a: List<T>);
        Изменяет порядок элементов в списке на противоположный
procedure Reverse<T>(a: List<T>; index, count: integer);
        Изменяет порядок элементов на противоположный в диапазоне списка длины count, начиная с индекса index
procedure Reverse(var s: string);
        Изменяет порядок символов в строке на противоположный
procedure Reverse(var s: string; index, count: integer);
        Изменяет порядок символов в части строки длины count на противоположный, начиная с индекса index
procedure SetLength(var a: array of T; n: integer);
        Устанавливает длину одномерного массива. Старое содержимое сохраняется
procedure SetLength(var a: array [,...,] of T; n1,n2,...: integer);
        Устанавливает размеры n-мерного массива. Старое содержимое сохраняется
procedure Shuffle<T>(a: array of T);
        Случайно перемешивает элементы массива
procedure Shuffle<T>(l: List<T>);
        Случайно перемешивает элементы списка
procedure Sort<T>(a: array of T);
        Сортирует массив по возрастанию
procedure Sort(a: array of string);
        Сортирует массив по возрастанию
procedure Sort<T>(a: array of T; cmp: (T,T)->integer);
        Сортирует массив по критерию сортировки, задаваемому функцией сравнения cmp
procedure Sort<T>(a: array of T; less: (T,T)->boolean);
        Сортирует массив по критерию сортировки, задаваемому функцией сравнения less
procedure Sort<T,TKey>(a: array of T; keySelector: T->TKey);
        Сортирует массив по ключу
procedure Sort<T>(a: array of T; keySelector: T->string);
        Сортирует массив по ключу
procedure Sort<T>(l: List<T>);
        Сортирует список по возрастанию
procedure Sort(var l: List<string>);
        Сортирует список по возрастанию
procedure Sort<T>(l: List<T>; cmp: (T,T)->integer);
        Сортирует список по критерию сортировки, задаваемому функцией сравнения cmp
procedure Sort<T>(l: List<T>; less: (T,T)->boolean);
        Сортирует список по критерию сортировки, задаваемому функцией сравнения less
procedure Sort<T,T1>(var l: List<T>; keySelector: T->T1);
        Сортирует список по возрастанию по ключу
procedure Sort<T>(var l: List<T>; keySelector: T->string);
        Сортирует список по возрастанию по ключу
procedure SortDescending<T>(a: array of T);
        Сортирует массив по убыванию
procedure SortDescending(a: array of string);
        Сортирует массив по убыванию
procedure SortDescending<T,T1>(var a: array of T; keySelector: T->T1);
        Сортирует массив по убыванию по ключу
procedure SortDescending<T>(var a: array of T; keySelector: T->string);
        Сортирует массив по убыванию по ключу
procedure SortDescending<T>(l: List<T>);
        Сортирует список по убыванию
procedure SortDescending(var l: List<string>);
        Сортирует список по убыванию
procedure SortDescending<T,T1>(var l: List<T>; keySelector: T->T1);
        Сортирует список по убыванию по ключу
procedure SortDescending<T>(var l: List<T>; keySelector: T->string);
        Сортирует список по убыванию по ключу